/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.tests.keys; import java.io.ByteArrayInputStream; import java.util.List; import org.eclipse.core.commands.common.CommandException; import org.eclipse.core.internal.events.BuildCommand; import org.eclipse.core.resources.ICommand; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IPerspectiveDescriptor; import org.eclipse.ui.IPerspectiveRegistry; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import org.eclipse.ui.internal.Workbench; import org.eclipse.ui.internal.WorkbenchPage; import org.eclipse.ui.internal.keys.BindingService; import org.eclipse.ui.internal.keys.WorkbenchKeyboard; import org.eclipse.ui.keys.IBindingService; import org.eclipse.ui.tests.harness.util.UITestCase; /** * Test for Bug 44460. * * @since 3.0 */ public class Bug44460Test extends UITestCase { /** * Constructs a new instance of this test case. * * @param testName * The name of the test */ public Bug44460Test(String testName) { super(testName); } /** * Test that pressing "Ctrl+Shift+T" in the Team Synchronizing perspective * does not match anything. * * @throws CommandException * If execution of the handler fails. * @throws CoreException * If the project cannot be created or opened. */ public void testCtrlShiftT() throws CommandException, CoreException { // Open a new test window. IWorkbenchWindow window = openTestWindow(); // Open a new Java project, with a new class. IWorkspace workspace = ResourcesPlugin.getWorkspace(); IProject testProject = workspace.getRoot().getProject( "Bug 44460 Project"); //$NON-NLS-1$ testProject.create(null); testProject.open(null); IProjectDescription projectDescription = testProject.getDescription(); String[] natureIds = { "org.eclipse.jdt.core.javanature" }; //$NON-NLS-1$ projectDescription.setNatureIds(natureIds); ICommand buildCommand = new BuildCommand(); buildCommand.setBuilderName("org.eclipse.jdt.core.javabuilder"); //$NON-NLS-1$ projectDescription.setBuildSpec(new ICommand[] { buildCommand }); testProject.setDescription(projectDescription, null); IFile javaFile = testProject.getFile("A.java"); //$NON-NLS-1$ String classContents = "public class Main { public static main(String[] args) { ; } }"; //$NON-NLS-1$ ByteArrayInputStream inputStream = new ByteArrayInputStream( classContents.getBytes()); javaFile.create(inputStream, true, null); IDE.openEditor(window.getActivePage(), javaFile, true); // Switch to the team synchronizing perspective. IPerspectiveRegistry registry = PlatformUI.getWorkbench() .getPerspectiveRegistry(); IPerspectiveDescriptor perspectiveDescriptor = registry .findPerspectiveWithId("org.eclipse.team.ui.TeamSynchronizingPerspective"); //$NON-NLS-1$ WorkbenchPage page = (WorkbenchPage) window.getActivePage(); page.setPerspective(perspectiveDescriptor); // Press "Ctrl+Shift+T". Event ctrlShiftT = new Event(); ctrlShiftT.stateMask = SWT.SHIFT | SWT.CTRL; ctrlShiftT.character = 'T'; ctrlShiftT.keyCode = 't'; List keyStrokes = WorkbenchKeyboard .generatePossibleKeyStrokes(ctrlShiftT); Workbench workbench = (Workbench) window.getWorkbench(); BindingService support = (BindingService) workbench .getAdapter(IBindingService.class); support.getKeyboard().press(keyStrokes, null); // Test that only two child shells are open (default). Shell windowShell = window.getShell(); Shell[] childShells = windowShell.getShells(); assertTrue( "Type hierarchy dialog opened inappropriately on 'Ctrl+Shift+T'", (childShells.length == 2)); //$NON-NLS-1$ } }